/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.bookshop.DTO;

import com.bookshop.entity.Book;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.ejb.Stateful;

/**
 *
 * @author Samir
 */
@Stateful
public class shoppingCartBean implements shoppingCartBeanLocal {

    private List<CartItem> cartItems;
    private int quantity = 1;

    @PostConstruct
    public void initialize() {
        cartItems = new ArrayList<CartItem>();
    }

    @PreDestroy
    public void clear() {
        cartItems = null;
    }

    @Override
    public void addItem(Book item) {
        boolean itemFound = false;
        for (CartItem cartItem : cartItems) {
            if (cartItem.getItem().equals(item)) {
                cartItem.setQuantity(cartItem.getQuantity()+quantity);
                itemFound = true;
            }
        }
        if (!itemFound) {
            cartItems.add(new CartItem(item, 1));
        }
    }

    @Override
    public String removeItem(Book item) {
        for (CartItem cartItem : cartItems) {
            if (cartItem.getItem().equals(item)) {
                cartItems.remove(cartItem);
                return null;
            }
        }
        return "myCart.xhtml";
    }

    @Override
    public String getTotal() {
        double total = 0d;
        String retour ="";
        if (cartItems.isEmpty()) {
            return retour;
        }
        for (CartItem cartItem : cartItems) {
            DecimalFormat df = new DecimalFormat("#,###.00");      
            total +=  cartItem.getSubTotal();
            retour = df.format(total);
        }
        return retour;
    }
    /**
     *retourne le nombre d'article dans le panier
     * @return
     */
    @Override
     public int getItemNumberFromCart(){
         int nbArticle = 0;
         if (cartItems.isEmpty()) {
            return nbArticle;
        }
        for (CartItem cartItem : cartItems) {
            nbArticle += cartItem.getQuantity();
        }
         return nbArticle;
     }

    public void empty() {
        cartItems.clear();
    }
    
    @Override
    public List<CartItem> getCartItems() {
        return cartItems;
    }
}
